/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *用于架构基于5500和8266双开的mqtt网络，
 * Change Logs:
 * Date           Author       Notes
 * 2021-04-05     RT-Thread    first version
 */

#include <rtthread.h>

#include <fal.h>
#include <easyflash.h>

#include <MQTT/mqtt.h>
#include <NET/net.h>
#include <CONTROL/control.h>
#include <Device/device.h>
#include <GLOBAL/version.h>
#include <GLOBAL/code.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#define RT_V         "1.0.0"
#define RT_APP_PART_ADDR 0x8020000


// char *net_wifi_password = "1a2b3c4d5e6f7";
// char *net_wifi_ssid = "TP-LINK_FSC";

static int ota_app_vtor_reconfig(void)
{
    #define NVIC_VTOR_MASK   0x3FFFFF80
    /* Set the Vector Table base location by user application firmware definition */
    SCB->VTOR = RT_APP_PART_ADDR & NVIC_VTOR_MASK;

    return 0;
}

INIT_BOARD_EXPORT(ota_app_vtor_reconfig);

extern struct netdev *netdev_default;
int main(void)
{
    int count = 1;
    // int led_status = 0;
    int net_flag = 1; // 开启网络检测
    int mqtt_flag = 1; // mqtt连接成功初始化
    int delay_cnt=0; // 延时发送

    LOG_I("===========Version==============");
    LOG_I("app version:%s", VERSION);
    LOG_I("================================");

    // 初始化
    fal_init();  
    easyflash_init();
    net_init(2);
    // ctl_pin_init(); // 初始化控制

    while (count++)
    {
        // 1秒, 系统指示灯周期性闪烁
        if (count % 100 == 0) {
            // LOG_I("System Run...");
            // LOG_I("Mqtt connected %d...", mqtt_is_connected());
            // led_status++;
            // rt_pin_write(PIN_OUT_0, led_status%2);
            if(net_flag) {
                if (net_is_connected()) {
                    net_flag = 0;
                    mqtt_start();
                }
            }
            // mqtt连接成功，初始化发送相关信息
            if (mqtt_flag) {
                if (mqtt_is_connected()) {
                    if (delay_cnt == 2) {
                        mqtt_send_msg(CODE_GET_VERSION, VERSION); // 发送版本号
                    }
                    if (delay_cnt == 3) {
                        // ctl_pin_init(); // 初始化控制
                        ctl_init();
                        mqtt_flag = 0; // 关闭
                    }
                    delay_cnt++;
                }
            } 
        }
        // // 3秒后开启引脚检测
        // if (count == 4000) {
        //     ctl_check_flag = 1;
        // }
        // // 100ms,检测控制引脚变化
        // if (ctl_check_flag) {
        //     if (count % 100 == 0) {
        //         ctl_pin_check();
        //     }
        // }
        rt_thread_mdelay(10);
    }

    return RT_EOK;
}
